import { FormProps, FormSchema } from "/@/components/Table"
import { BasicColumn } from "/@/components/Table/src/types/table"

export function getBasicColumns(): BasicColumn[] {
  return [
    {
      title: "ID",
      dataIndex: "id",
      fixed: "left",
      width: 200,
    },
    {
      title: "姓名",
      dataIndex: "name",
      width: 150,
      filters: [
        { text: "Male", value: "male" },
        { text: "Female", value: "female" },
      ],
    },
    {
      title: "地址",
      dataIndex: "address",
      width: 300,
    },
    {
      title: "编号",
      dataIndex: "no",
      width: 150,
      sorter: true,
      defaultHidden: true,
    },
    {
      title: "开始时间",
      width: 150,
      sorter: true,
      dataIndex: "beginTime",
    },
    {
      title: "结束时间",
      width: 150,
      sorter: true,
      dataIndex: "endTime",
    },
  ]
}

export function getBasicShortColumns(): BasicColumn[] {
  return [
    {
      title: "ID",
      width: 150,
      dataIndex: "id",
      sorter: true,
      sortOrder: "ascend",
    },
    {
      title: "姓名",
      dataIndex: "name",
      width: 120,
    },
    {
      title: "地址",
      dataIndex: "address",
    },
    {
      title: "编号",
      dataIndex: "no",
      width: 80,
    },
  ]
}

export function getMultipleHeaderColumns(): BasicColumn[] {
  return [
    {
      title: "ID",
      dataIndex: "id",
      width: 200,
    },
    {
      title: "姓名",
      dataIndex: "name",
      width: 120,
    },
    {
      title: "地址",
      dataIndex: "address",
      sorter: true,
      children: [
        {
          title: "编号",
          dataIndex: "no",
          width: 120,
          filters: [
            { text: "Male", value: "male", children: [] },
            { text: "Female", value: "female", children: [] },
          ],
        },

        {
          title: "开始时间",
          dataIndex: "beginTime",
          width: 120,
        },
        {
          title: "结束时间",
          dataIndex: "endTime",
          width: 120,
        },
      ],
    },
  ]
}

export function getCustomHeaderColumns(): BasicColumn[] {
  return [
    {
      title: "ID",
      dataIndex: "id",
      width: 200,
    },
    {
      // title: '姓名',
      dataIndex: "name",
      width: 120,
      slots: { title: "customTitle" },
    },
    {
      // title: '地址',
      dataIndex: "address",
      width: 120,
      slots: { title: "customAddress" },
      sorter: true,
    },

    {
      title: "编号",
      dataIndex: "no",
      width: 120,
      filters: [
        { text: "Male", value: "male", children: [] },
        { text: "Female", value: "female", children: [] },
      ],
    },
    {
      title: "开始时间",
      dataIndex: "beginTime",
      width: 120,
    },
    {
      title: "结束时间",
      dataIndex: "endTime",
      width: 120,
    },
  ]
}
const renderContent = ({ text, index }: { text: any; index: number }) => {
  const obj: any = {
    children: text,
    attrs: {},
  }
  if (index === 9) {
    obj.attrs.colSpan = 0
  }
  return obj
}
export function getMergeHeaderColumns(): BasicColumn[] {
  return [
    {
      title: "ID",
      dataIndex: "id",
      width: 300,
      customRender: renderContent,
    },
    {
      title: "姓名",
      dataIndex: "name",
      width: 300,
      customRender: renderContent,
    },
    {
      title: "地址",
      dataIndex: "address",
      colSpan: 2,
      width: 120,
      sorter: true,
      customRender: ({ text, index }: { text: any; index: number }) => {
        const obj: any = {
          children: text,
          attrs: {},
        }
        if (index === 2) {
          obj.attrs.rowSpan = 2
        }
        if (index === 3) {
          obj.attrs.colSpan = 0
        }
        return obj
      },
    },
    {
      title: "编号",
      dataIndex: "no",
      colSpan: 0,
      filters: [
        { text: "Male", value: "male", children: [] },
        { text: "Female", value: "female", children: [] },
      ],
      customRender: renderContent,
    },
    {
      title: "开始时间",
      dataIndex: "beginTime",
      width: 200,
      customRender: renderContent,
    },
    {
      title: "结束时间",
      dataIndex: "endTime",
      width: 200,
      customRender: renderContent,
    },
  ]
}
export const getAdvanceSchema = (itemNumber = 6): FormSchema[] => {
  const arr: any = []
  for (let index = 0; index < itemNumber; index++) {
    arr.push({
      field: `field${index}`,
      label: `字段${index}`,
      component: "Input",
      colProps: {
        xl: 12,
        xxl: 8,
      },
    })
  }
  return arr
}
export function getFormConfig(): Partial<FormProps> {
  return {
    labelWidth: 100,
    schemas: [
      ...getAdvanceSchema(5),
      {
        field: `field11`,
        label: `Slot示例`,
        component: "Select",
        slot: "custom",
        colProps: {
          xl: 12,
          xxl: 8,
        },
      },
    ],
  }
}
export function getBasicData() {
  const data: any = (() => {
    const arr: any = []
    for (let index = 0; index < 40; index++) {
      arr.push({
        id: `${index}`,
        name: "John Brown",
        age: `1${index}`,
        no: `${index + 10}`,
        address: "New York No. 1 Lake ParkNew York No. 1 Lake Park",
        beginTime: new Date().toLocaleString(),
        endTime: new Date().toLocaleString(),
      })
    }
    return arr
  })()
  return data
}

export function getTreeTableData() {
  const data: any = (() => {
    const arr: any = []
    for (let index = 0; index < 40; index++) {
      arr.push({
        id: `${index}`,
        name: "John Brown",
        age: `1${index}`,
        no: `${index + 10}`,
        address: "New York No. 1 Lake ParkNew York No. 1 Lake Park",
        beginTime: new Date().toLocaleString(),
        endTime: new Date().toLocaleString(),
        children: [
          {
            id: `l2-${index}`,
            name: "John Brown",
            age: `1${index}`,
            no: `${index + 10}`,
            address: "New York No. 1 Lake ParkNew York No. 1 Lake Park",
            beginTime: new Date().toLocaleString(),
            endTime: new Date().toLocaleString(),
          },
          {
            id: `l3-${index}`,
            name: "John Mary",
            age: `1${index}`,
            no: `${index + 10}`,
            address: "New York No. 1 Lake ParkNew York No. 1 Lake Park",
            beginTime: new Date().toLocaleString(),
            endTime: new Date().toLocaleString(),
          },
        ],
      })
    }
    return arr
  })()

  return data
}
